Así que actualmente estoy practicando con un bot comercial en un casco. Mi problema es que cuando quiero ejecutar mi script aparece este error:
import './ABIConstants.js'; ^^^^^^ SyntaxError: Cannot use import statement outside a modulecon esta sugerencia:
(node:1284) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.Sin embargo, cuando hago lo que me dice y configuro "tipo": "módulo" me sale este error:
hardhat.config.js is treated as an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which declares all .js files in that package scope as ES modules. Instead rename hardhat.config.js to end in .cjs, change the requiring code to use dynamic import() which is avakage.json to treat all .js files as CommonJS (using .mjs for all ES modules instead).Y los errores siguen como hago lo anterior....etc....
¿Cómo puedo solucionar esto?
Aquí está el comando que estoy usando para ejecutar el script si ayuda
npx hardhat run scripts/ArbitrageBot.jsHay dos tipos de módulos en nodejs: el CommonJS más antiguo que usa require() para cargar otros módulos de CommonJS y el ESM más nuevo que usa import para cargar otros módulos de ESM. Hay algunas formas de mezclar y combinar tipos de módulos, pero eso requiere algunos conocimientos adicionales y siempre es más fácil si todos los módulos de su proyecto son del mismo tipo. Entonces, para que podamos ofrecer consejos específicos sobre su proyecto, necesitamos saber todo lo que está tratando de usar en su proyecto y qué tipo de módulo son todos.
El error específico que informa primero en su pregunta se debe a que está tratando de usar la import para cargar otros módulos desde un archivo que nodejs asume que es un módulo CommonJS y no lo permitirá. Si todo con lo que está programando son módulos CommonJS, cambie para usar require() para cargar su módulo en lugar de import . Pero, si no todo son módulos CommonJS, entonces puede ser un poco más complicado.
La extensión de archivo ( .mjs o .cjs ) puede forzar un tipo de módulo o el "type": xxx en el paquete.json puede forzar un tipo. De forma predeterminada, sin ninguno de los dos en su lugar, nodejs asume que su módulo de nivel superior con una extensión .js es un módulo CommonJS donde usaría require() para cargar otros módulos CommonJS.
El segundo error que recibe cuando intenta forzar que su módulo de nivel superior sea un módulo ESM hace que parezca que el módulo que está tratando de importar es un módulo CommonJS.
Entonces, si tuviera que adivinar, diría que el archivo que está tratando de importar es un archivo CommonJS y, por lo tanto, la vida sería más fácil si hiciera su archivo de nivel superior CommonJS. Para hacer eso, elimine el "type": "module" de package.json y cambie su import someModule a require(someModule) en su lugar. Esto intentará dejar que todo sean módulos CommonJS.